/**
 * @Title: PrivilegeService.java
 * @Package com.leesche.zcsp.node.web.service.privilege
 * @Description:()
 * @author dennies yang
 * @date 2016年10月14日 上午11:18:39
 * @version V1.0
 */
package com.leesche.zcsp.node.web.service.privilege;

import java.util.Map;

import com.leesche.zcsp.node.web.service.impl.data.read.SysModuleDto;
import com.leesche.zcsp.node.web.vo.Principal;
import com.leesche.zcsp.node.web.vo.Privilege;

/**
 * @Title: PrivilegeService.java
 * @Package com.leesche.zcsp.node.web.service.privilege
 * @Description:(缓存系统的所有权限)
 * @author dennies yang
 * @date 2016年10月14日 上午11:18:39
 * @version V1.0
 */
public interface PrivilegeService {
    /***
     *
     * @Title: refreshPrivilege
     * @Description: TODO(刷新系统的所有权限)
     * @param
     * @return void
     * @throws
     */
    void refreshPrivilege();

    /***
     *
     * @Title: addWebPrivilege
     * @Description: TODO(增加PC端权限)
     * @param
     * @return void
     * @throws
     */
    void addWebPrivilege(SysModuleDto sysModule);

    /**
     *
     * @Title: addWechatPrivilege
     * @Description: TODO(增加微信端权限)
     * @param @param sysModule
     * @return void
     * @throws
     */
    void addWechatPrivilege(SysModuleDto sysModule);

    /**
     *
     * @Title: addAppPrivilege
     * @Description: TODO(增加APP权限)
     * @param @param sysModule
     * @return void
     * @throws
     */
    void addAppPrivilege(SysModuleDto sysModule);

    /**
     * @Title: addOperationPrivilege
     * @Description: TODO(增加操作权限)
     * @author Jerry
     * @date 2016-10-18 12:03:36
     * @param sysModule 系统权限
     */
    void addOperationPrivilege(SysModuleDto sysModule);

    /**
     * @Title: updateOperationPrivilege
     * @Description: TODO(更新缓存中的操作权限)
     * @author Jerry
     * @date 2016-10-18 12:04:58
     * @param sysModule 系统权限
     */
    void updateOperationPrivilege(SysModuleDto sysModule);

    /***
     *
     * @Title: updateWebPrivilege
     * @Description: TODO(更新缓存中的WEB权限)
     * @param @param sysModule
     * @return void
     * @throws
     */
    void updateWebPrivilege(SysModuleDto sysModule);

    /***
     *
     * @Title: updateWechatPrivilege
     * @Description: TODO(更新缓存中的微信权限)
     * @param @param sysModule
     * @return void
     * @throws
     */
    void updateWechatPrivilege(SysModuleDto sysModule);

    /***
     *
     * @Title: updateAppPrivilege
     * @Description: TODO(更新缓冲中的APP权限)
     * @param @param sysModule
     * @return void
     * @throws
     */
    void updateAppPrivilege(SysModuleDto sysModule);


    /**
     * @Title: deleteOperationPrivilege
     * @Description: TODO(删除缓存中的操作权限)
     * @author Jerry
     * @date 2016-10-18 12:05:52
     * @param moduleId 权限编号
     */
    void deleteOperationPrivilege(Long moduleId);

    /***
     *
     * @Title: deleteWebPrivilege
     * @Description: TODO(删除缓存中的WEB权限)
     * @param @param sysModule
     * @return void
     * @throws
     */
    void deleteWebPrivilege(Long moduleId);

    /***
     *
     * @Title: deleteWechatPrivilege
     * @Description: TODO(删除缓存中的微信权限)
     * @param @param sysModule
     * @return void
     * @throws
     */
    void deleteWechatPrivilege(Long moduleId);

    /***
     *
     * @Title: deleteAppPrivilege
     * @Description: TODO(删除缓存中的APP权限)
     * @param @param sysModule
     * @return void
     * @throws
     */
    void deleteAppPrivilege(Long moduleId);

    /**
     * @Title: isUserOperationPrivilege
     * @Description: TODO( 判断该操作路径是否有权限执行 )
     * @author Jerry
     * @param @param uri 请求的URI
     * @date 2016-10-18 12:07:00
     * @return boolean 鉴权结果
     */
    boolean isUserOperationPrivilege(String uri);

    /**
     *
     * @Title: isUserWebPrivilege
     * @Description: TODO(判断该路径是有权限执行)
     * @param @param uri
     * @param @return
     * @return boolean 鉴权结果
     * @throws
     */
    boolean isUserWebPrivilege(String uri);

    /***
     *
     * @Title: isUserWechatPrivilege
     * @Description: TODO(判断微信的路径是否有权限执行)
     * @param @param uri
     * @param @return
     * @return boolean 鉴权结果
     * @throws
     */
    boolean isUserWechatPrivilege(String uri);

    /***
     *
     * @Title: isUserAppPrivilege
     * @Description: TODO(判断APP的URL是否有权限执行)
     * @param @param uri
     * @param @return
     * @return boolean 鉴权结果
     * @throws
     */
    boolean isUserAppPrivilege(String uri);

    /**
     * @Title: getOperationPrivileges
     * @Description: TODO( 获取操作权限 )
     * @author Jerry
     * @date 2016-10-18 12:09:56
     * @return 操作权限集合
     */
    Map<Long, Privilege> getOperationPrivileges();

    /**
     *
     * @Title: getWebPrivileges
     * @Description: TODO(WEB权限)
     * @param @return
     * @return Map<Long,Privilege>
     * @throws
     */
    Map<Long, Privilege> getWebPrivileges();

    /**
     *
     * @Title: getWechatPrivileges
     * @Description: TODO(获取微信权限)
     * @param @return
     * @return Map<Long,Privilege>
     * @throws
     */
    Map<Long, Privilege> getWechatPrivileges();

    /***
     *
     * @Title: getAppPrivileges
     * @Description: TODO(获取APP权限)
     * @param @return
     * @return Map<Long,Privilege>
     * @throws
     */
    Map<Long, Privilege> getAppPrivileges();

    /***
     *
     * @Title: getCurrentPrincipal
     * @Description: TODO(获取当前的权限)
     * @param @return
     * @return Principal
     * @throws
     */
    Principal getCurrentPrincipal();

    /*
      * @Title: getCurrentPrincipal
     * @Description: TODO(获取当前APP的权限)
     * @param @return
            * @return Principal
     * @throws
             */
   Principal getCurrentPrincipalForApp();


}
